#ifndef _DRIVERS_CONFIGH
typedef struct {
	char *name;
	void *ptr;
	int len;
} CFGSTRUCT;

void SaveFCEUConfig(char *filename, CFGSTRUCT *cfgst);
void LoadFCEUConfig(char *filename, CFGSTRUCT *cfgst);

/* Macros for building CFGSTRUCT structures. */

/* CFGSTRUCT structures must always end with ENDCFGSTRUCT */
#define ENDCFGSTRUCT        { 0, 0, 0 }

/* When this macro is used, the config loading/saving code will parse
   the new config structure until the end of it is detected, then it
   will continue parsing the original config structure.
*/
#define ADDCFGSTRUCT(x) { 0, &x, 0 }

/* Oops.  The NAC* macros shouldn't have the # in front of the w, but
   fixing this would break configuration files of previous versions and it
   isn't really hurting much.
*/

/* Single piece of data(integer). */
#define AC(x)   { # x, &x, sizeof(x) }
#define NAC(w, x) { # w, &x, sizeof(x) }

/* Array. */
#define ACA(x)   { # x, x, sizeof(x) }
#define NACA(w, x) { # w, x, sizeof(x) }

/* String(pointer) with automatic memory allocation. */
#define ACS(x)  { # x, &x, 0 }
#define NACS(w, x)  { # w, &x, 0 }

#define _DRIVERS_CONFIGH
#endif
